#ifndef __PROVISIONING_H__
#define __PROVISIONING_H__

#include <stddef.h>

#ifdef __cplusplus
extern "C" {
#endif

#define PROVISIONING_HTTP_SERVER_ENABLE (1)

/**
 * @brief HTTP GET 请求回调函数类型定义
 * 
 * 用户需要在此回调函数中返回一个配网网页字符串，用于显示配网页面。
 * @return 配网网页字符串
 */
typedef char *(*provisioning_http_get_html_cb_t)(void);

/**
 * @brief HTTP GET 请求回调函数类型定义
 * 
 * 用户需要在此回调函数中返回一个配网网页字符串（动态内存），用于显示当前配网参数。
 * @return 配网网页字符串
 */
typedef char *(*provisioning_http_get_config_cb_t)(void);

/**
 * @brief HTTP POST 请求回调函数类型定义
 * 
 * 用户需要在此回调函数中返回一个字符串，表示HTTP POST请求的处理结果。
 * @param content POST请求的内容
 * @return 处理结果
 */
typedef char *(*provisioning_http_post_cb_t)(const char *content);

/**
 * @brief 注册配网服务GET请求回调
 * 
 * 本函数用于注册配网服务GET请求回调, 用于显示配网页面。
 * 
 * @param cb 回调函数
 */
void provisioning_register_http_get_html_cb(provisioning_http_get_html_cb_t cb);

/**
 * @brief 注册配网服务GET请求回调
 * 
 * 本函数用于注册配网服务GET请求回调, 用于获取当前配网参数。
 * 
 * @param cb 回调函数
 */
void provisioning_register_http_get_config_cb(provisioning_http_get_config_cb_t cb);

/**
 * @brief 注册配网服务POST请求回调
 * 
 * 本函数用于注册配网服务POST请求回调。
 * 
 * @param cb 回调函数
 */
void provisioning_register_http_post_cb(provisioning_http_post_cb_t cb);

/**
 * @brief 启动配网服务
 * 
 * 本函数用于启动配网服务，包括HTTP服务器等。
 * 
 * @return 成功返回0，失败返回非0
 */
int provisioning_start(void);

/**
 * @brief 停止配网服务
 * 
 * 本函数用于停止配网服务，包括HTTP服务器等。
 * 
 * @return 成功返回0，失败返回非0
 */
int provisioning_stop(void);

#ifdef __cplusplus
}
#endif

#endif // __PROVISIONING_H__
